"""
假设你要找一把钥匙，
这把钥匙在一个大盒子里，大盒子里是盒子堆（大盒子里面有许多的小盒子，小盒子里面又有小小盒子）。
钥匙在某个盒子中，你将使用什么算法进行求解
"""

"""
算法一：
(1) 创建一个要查找的盒子堆。
(2) 从盒子堆取出一个盒子，在里面找。
(3) 如果找到的是盒子，就将其加入盒子堆中，以便以后再查找。
(4) 如果找到钥匙，则大功告成！
(5) 回到第二步。
算法二：
(1) 检查盒子中的每样东西。
(2) 如果是盒子，就回到第一步。
(3) 如果是钥匙，就大功告成！

所以,使用算法二时更容易寻找到钥匙，而算法二的实现思路就是使用递归
"""

"""递归找钥匙的伪代码"""


def look_for_key(box):
    for item in box:
        if item.is_a_box():
            look_for_key(item)
        elif item.is_a_key():
            print('found the key')


"""
递归条件：
    调用自身
基线条件：
    结束调用
"""


def countdown(i):
    print(i)
    if i <= 1:
        return  # 基线条件
    else:
        countdown(i - 1)  # 递归条件
